//    Copyright 2019-2020 namazso <admin@namazso.eu>
//    This file is part of OpenHashTab.
//
//    OpenHashTab is free software: you can redistribute it and/or modify
//    it under the terms of the GNU General Public License as published by
//    the Free Software Foundation, either version 3 of the License, or
//    (at your option) any later version.
//
//    OpenHashTab is distributed in the hope that it will be useful,
//    but WITHOUT ANY WARRANTY; without even the implied warranty of
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//    GNU General Public License for more details.
//
//    You should have received a copy of the GNU General Public License
//    along with OpenHashTab.  If not, see <https://www.gnu.org/licenses/>.
#pragma once

#ifndef STRICT
#define STRICT
#endif

#define NOMINMAX

#include "targetver.h"

#define ISOLATION_AWARE_ENABLED 1
#define SIDEBYSIDE_COMMONCONTROLS 1

// ATL
#define _ATL_APARTMENT_THREADED
#define _ATL_NO_AUTOMATIC_NAMESPACE
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS	// some CString constructors will be explicit
#define ATL_NO_ASSERT_ON_DESTROY_NONEXISTENT_WINDOW

#include "resource.h"
#include <atlbase.h>
#include <atlcom.h>
#include <atlctl.h>

// Windows
#include <Windows.h>
#include <WinUser.h>
#include <CommCtrl.h>
#include <windowsx.h>
#include <VersionHelpers.h>
#include <pathcch.h>

// STL
#include <cstdint>
#include <cassert>
#include <list>
#include <string>
#include <vector>
#include <memory>
#include <atomic>
#include <algorithm>
#include <array>
#include <mutex>
#include <sstream>

// concurrentqueue
#include <blockingconcurrentqueue.h>

using tstring = std::basic_string<TCHAR>;